Modern software development practice calls for software to be tested in the manner that it will be used. It can be challenging, however, to adequately test software that is built to be reusable and run on different platforms and/or in different operating environments. For example, software components may be expected to run in many different hardware and/or software operating environments, with different types and versions of processors, chipsets, device drivers, operating systems, application servers, and so forth, including without limitation configuration differences such as languages, graphical displays, memory configurations and so on. It may be very expensive and administratively difficult to acquire and maintain a suitable variety of hardware and software test systems.